home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.hitl.washington.edu
/
ftp.hitl.washington.edu.tar
/
ftp.hitl.washington.edu
/
pub
/
people
/
tsoper
/
CT Explorer
/
Sensor.cs
< prev
next >
Wrap
Text File
|
2005-05-23
|
11KB
|
386 lines
//Sensor.cs
//
// The Sensor class is responsble for setting and getting all parameters from the
// PCI board as well as printing the values.
using System;
using System.Windows.Forms;
namespace PCIBird
{
/// <summary>
/// Summary description for Sensor.
/// </summary>
public class Sensor
{
public DataFormatParameter DataFormat;
public AngleAlignParameter AngleAlign;
public HemisphereParameter Hemisphere;
public FilterACWideNotchParameter FilterACWideNotch;
public FilterACNarrowNotchParameter FilterACNarrowNotch;
public FilterDCAdaptiveParameter FilterDCAdaptive;
public FilterAlphaParameters FilterAlpha; //Parameters (plural)
public FilterLargeChangeParameter FilterLargeChange;
public QualityParams Quality; //Params used b/c QualityParameters already used
public SerialNumberRXParameter SerialNumberRX;
public PCIBirdWrapper pciBird;
public ushort id;
//overloaded constructors
public Sensor()
{
//create wrapper library
pciBird = new PCIBirdWrapper();
id = 0; //initialize id to 0
LoadParameters();
}
public Sensor(ushort ID)
{
//create wrapper library
pciBird = new PCIBirdWrapper();
id = ID;
LoadParameters();
}
public Sensor(ushort ID, PCIBirdWrapper pciBirdWrapper)
{
//create wrapper library
pciBird = pciBirdWrapper;
id = ID;
LoadParameters();
}
private void LoadParameters()
{
//instantiate parameters
DataFormat = new DataFormatParameter(id,pciBird);
AngleAlign = new AngleAlignParameter(id,pciBird);
Hemisphere = new HemisphereParameter(id,pciBird);
FilterACWideNotch = new FilterACWideNotchParameter(id,pciBird);
FilterACNarrowNotch = new FilterACNarrowNotchParameter(id,pciBird);
FilterDCAdaptive = new FilterDCAdaptiveParameter(id,pciBird);
FilterAlpha = new FilterAlphaParameters(id,pciBird);
FilterLargeChange = new FilterLargeChangeParameter(id,pciBird);
Quality = new QualityParams(id,pciBird);
SerialNumberRX = new SerialNumberRXParameter(id,pciBird);
}
public SensorConfig GetSensorConfig()
{
return pciBird.GetSensorConfig(id);
}
public PositionAnglesReading GetAsyncReading()
{
PositionAnglesReading par = new PositionAnglesReading();
pciBird.GetAsyncSensorReading(id,par,48);
return par;
}
public void PrintSensorConfig( RichTextBox rtb )
{
//get the configuration
SensorConfig sc = GetSensorConfig();
string configStr = "\n\nSENSOR " + id + " CONFIGURATION:\n" +
"Serial Number: " + sc.serialNumber + "\n" +
"Board Number: " + sc.boardNumber + "\n" +
"Channel Number: " + sc.channelNumber + "\n" +
"Type: " + sc.type + "\n" +
"Attached " + sc.attached + "\n";
rtb.AppendText(configStr);
}
public void PrintSensorParameters( RichTextBox rtb )
{
string alphaMaxStr = "";
string alphaMinStr = "";
string vmStr = "";
for(int i = 0; i < 7; i++)
{
alphaMaxStr = alphaMaxStr + this.FilterAlpha.Get().alphaMax[i] + " ";
alphaMinStr = alphaMinStr + this.FilterAlpha.Get().alphaMin[i] + " ";
vmStr = vmStr + this.FilterAlpha.Get().vm[i] + " ";
}
string paramStr = "\n\nSENSOR " + id + " PARAMETERS:\n" +
"Data Format: " + this.DataFormat.Get() + "\n" +
"Angle Align: " + " azimuth:" + this.AngleAlign.Get().a +
" elevation:" + this.AngleAlign.Get().e +
" roll:" + this.AngleAlign.Get().r + "\n" +
"Hemisphere: " + this.Hemisphere.Get() + "\n" +
"Filter AC Wide Notch: " + this.FilterACWideNotch.Get() + "\n" +
"Filter AC Narrow Notch: " + this.FilterACNarrowNotch.Get() + "\n" +
"Filter DC Adaptive: " + this.FilterDCAdaptive.Get() + "\n" +
"Filter Alpha Parameters:\n" + " Alpha Min: " + alphaMinStr + "\n" +
" Alpha Max: " + alphaMaxStr + "\n" +
" vm: " + vmStr + "\n" +
"Filter Large Change: " + this.FilterLargeChange.Get() + "\n" +
"Quality: " + "slope:" + this.Quality.Get().errorSlope + " " +
"offset:" + this.Quality.Get().errorOffset + " " +
"sensitivity:" + this.Quality.Get().errorSensitivity + " " +
"Filter Alpha:" + this.Quality.Get().filterAlpha + "\n" +
"Serial Number: " + this.SerialNumberRX.Get();
rtb.AppendText(paramStr);
}
/************************ PARAMETER CLASSES ***********************************/
// DATA FORMAT PARAMETER----------------------------
public class DataFormatParameter
{
private ushort id;
private PCIBirdWrapper pciBird;
public DataFormatParameter(ushort ID, PCIBirdWrapper pciBirdWrapper)
{
id = ID;
pciBird = pciBirdWrapper;
}
public DATA_FORMAT_TYPE Get()
{
object o = new int();
pciBird.GetSensorParam(id,SENSOR_PARAMETER_TYPE.DATA_FORMAT, o, 4);
return (DATA_FORMAT_TYPE) Convert.ToInt32(o);
}
public void Set(DATA_FORMAT_TYPE dft)
{
pciBird.SetSensorParam(id,SENSOR_PARAMETER_TYPE.DATA_FORMAT,(int)dft,4);
return;
}
}
// ANGLE ALIGN PARAMETER----------------------------
public class AngleAlignParameter
{
private ushort id;
private PCIBirdWrapper pciBird;
public AngleAlignParameter(ushort ID, PCIBirdWrapper pciBirdWrapper)
{
id = ID;
pciBird = pciBirdWrapper;
}
public AnglesReading Get()
{
AnglesReading angleAlign = new AnglesReading();
pciBird.GetSensorParam(id,SENSOR_PARAMETER_TYPE.ANGLE_ALIGN, angleAlign,24);
return angleAlign;
}
public void Set(AnglesReading angleAlign)
{
pciBird.SetSensorParam(id,SENSOR_PARAMETER_TYPE.ANGLE_ALIGN,angleAlign,24);
return;
}
}
// HEMISPHERE PARAMETER----------------------------
public class HemisphereParameter
{
private ushort id;
private PCIBirdWrapper pciBird;
public HemisphereParameter(ushort ID, PCIBirdWrapper pciBirdWrapper)
{
id = ID;
pciBird = pciBirdWrapper;
}
public HEMISPHERE_TYPE Get()
{
object o = new int();
pciBird.GetSensorParam(id,SENSOR_PARAMETER_TYPE.HEMISPHERE,o,4);
return (HEMISPHERE_TYPE) Convert.ToInt32(o);
}
public void Set(HEMISPHERE_TYPE ht)
{
pciBird.SetSensorParam(id,SENSOR_PARAMETER_TYPE.HEMISPHERE,(int)ht,4);
return;
}
}
// FILTER AC WIDE NOTCH PARAMETER----------------------------
public class FilterACWideNotchParameter
{
private ushort id;
private PCIBirdWrapper pciBird;
public FilterACWideNotchParameter(ushort ID, PCIBirdWrapper pciBirdWrapper)
{
id = ID;
pciBird = pciBirdWrapper;
}
public bool Get()
{
object o = new int();
pciBird.GetSensorParam(id,SENSOR_PARAMETER_TYPE.FILTER_AC_WIDE_NOTCH,o,4);
return Convert.ToBoolean(o);
}
public void Set(bool torf)
{
int buffer = torf.CompareTo(false); //cast bool to int
pciBird.SetSensorParam(id,SENSOR_PARAMETER_TYPE.FILTER_AC_WIDE_NOTCH,buffer,4);
return;
}
}
// FILTER AC NARROW NOTCH PARAMETER----------------------------
public class FilterACNarrowNotchParameter
{
private ushort id;
private PCIBirdWrapper pciBird;
public FilterACNarrowNotchParameter(ushort ID, PCIBirdWrapper pciBirdWrapper)
{
id = ID;
pciBird = pciBirdWrapper;
}
public bool Get()
{
object o = new int();
pciBird.GetSensorParam(id,SENSOR_PARAMETER_TYPE.FILTER_AC_NARROW_NOTCH,o,4);
return Convert.ToBoolean(o);
}
public void Set(bool torf)
{
int buffer = torf.CompareTo(false); //cast bool to int
pciBird.SetSensorParam(id,SENSOR_PARAMETER_TYPE.FILTER_AC_NARROW_NOTCH,buffer,4);
return;
}
}
// FILTER DC ADAPTIVE PARAMETER----------------------------
public class FilterDCAdaptiveParameter
{
private ushort id;
private PCIBirdWrapper pciBird;
public FilterDCAdaptiveParameter(ushort ID, PCIBirdWrapper pciBirdWrapper)
{
id = ID;
pciBird = pciBirdWrapper;
}
public double Get()
{
object o = new double();
pciBird.GetSensorParam(id,SENSOR_PARAMETER_TYPE.FILTER_DC_ADAPTIVE,o,8);
return Convert.ToDouble(o);
}
public void Set(double dca)
{
pciBird.SetSensorParam(id,SENSOR_PARAMETER_TYPE.FILTER_DC_ADAPTIVE,dca,8);
return;
}
}
// FILTER ALPHA PARAMETERS----------------------------
public class FilterAlphaParameters
{
private ushort id;
private PCIBirdWrapper pciBird;
public FilterAlphaParameters(ushort ID, PCIBirdWrapper pciBirdWrapper)
{
id = ID;
pciBird = pciBirdWrapper;
}
public AdaptiveParameters Get()
{
AdaptiveParameters alpha = new AdaptiveParameters();
pciBird.GetSensorParam(id,SENSOR_PARAMETER_TYPE.FILTER_ALPHA_PARAMETERS,alpha,48);
return alpha;
}
public void Set(AdaptiveParameters alpha)
{
pciBird.SetSensorParam(id,SENSOR_PARAMETER_TYPE.FILTER_ALPHA_PARAMETERS,alpha,48);
return;
}
}
// FILTER LARGE CHANGE PARAMETER----------------------------
public class FilterLargeChangeParameter
{
private ushort id;
private PCIBirdWrapper pciBird;
public FilterLargeChangeParameter(ushort ID, PCIBirdWrapper pciBirdWrapper)
{
id = ID;
pciBird = pciBirdWrapper;
}
public bool Get()
{
object o = new int();
pciBird.GetSensorParam(id,SENSOR_PARAMETER_TYPE.FILTER_LARGE_CHANGE,o,4);
return Convert.ToBoolean(o);
}
public void Set(bool torf)
{
int buffer = torf.CompareTo(false); //cast bool to int
pciBird.SetSensorParam(id,SENSOR_PARAMETER_TYPE.FILTER_AC_NARROW_NOTCH,buffer,4);
return;
}
}
// QUALITY PARAMETERS----------------------------
public class QualityParams
{
private ushort id;
private PCIBirdWrapper pciBird;
public QualityParams(ushort ID, PCIBirdWrapper pciBirdWrapper)
{
id = ID;
pciBird = pciBirdWrapper;
}
public QualityParameters Get()
{
QualityParameters qp = new QualityParameters();
pciBird.GetSensorParam(id,SENSOR_PARAMETER_TYPE.QUALITY,qp,8);
return qp;
}
public void Set(QualityParameters qp)
{
pciBird.SetSensorParam(id,SENSOR_PARAMETER_TYPE.QUALITY,qp,8);
return;
}
}
// SERIAL NUMBER RX PARAMETER----------------------------
public class SerialNumberRXParameter
{
private ushort id;
private PCIBirdWrapper pciBird;
public SerialNumberRXParameter(ushort ID, PCIBirdWrapper pciBirdWrapper)
{
id = ID;
pciBird = pciBirdWrapper;
}
public int Get()
{
object o = new int();
pciBird.GetSensorParam(id,SENSOR_PARAMETER_TYPE.SERIAL_NUMBER_RX,o,4);
return Convert.ToInt32(o);
}
}
}
}